package com.jadesoft.listener;

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.jadesoft.stock.util.Constants;

/**
 * 每天下午5点执行一次. 获取股票的最新价格保存到DB 将最新的股票代码,股票名称写入stock-list.js
 * 
 * @author YZT
 * 
 */
public class StockListener implements ServletContextListener {
	private Timer timer = null;

	public void contextInitialized(ServletContextEvent arg0) {
		timer = new Timer(true);

		// 沪深股市开盘时间:9：30开盘。11：30收盘。下午13：00开盘，15点收盘
		// 首次执行设置在当天或者第二天的15点
		Calendar current = Calendar.getInstance(Constants.TIME_ZONE_CHINA);// 当前时间
		Calendar execute = Calendar.getInstance(Constants.TIME_ZONE_CHINA);// 首次执行时间
		execute.set(Calendar.HOUR_OF_DAY, Constants.STOCK_LISTENER_HOUR);
		execute.set(Calendar.MINUTE, Constants.STOCK_LISTENER_MINUTE);
		if (execute.before(current)) {
			execute.add(Calendar.DATE, 1);
		}
		long delay = execute.getTimeInMillis() - current.getTimeInMillis();

		// 参数1:任务，参数2:启动后延迟执行的间隔 参数3:重复执行的间隔
		timer.schedule(new StockTask(), delay, 24 * 60 * 60 * 1000);
	}

	public void contextDestroyed(ServletContextEvent arg0) {
		timer.cancel();
	}

}
